9. Servidores Web.


9.1. Introducción.

HTTP son las siglas de HyperText Transfer Protocol, protocolo de transferencia de hipertexto. HTTP es un protocolo de la capa de aplicación que regula las transacciones entre clientes (donde se encuentran unos programas llamados navegadores: Mozilla Firefox, Opera, Internet Explorer, etc.) y los servidores. El cliente solicita una página a un servidor (realiza una petición o solicitud HTTP), por ejemplo a http://www.anawim.no-ip.info. El servidor responde y le envía la página en formato HTML (HyperText Markup Language, lenguaje de marcado de hipertexto) que será interpretado por el navegador para su correcta visualización por el usuario.

En la parte del servidor se encuentran unos programas llamados servidores Web que son los encargados de atender las peticiones HTTP de los clientes. Ejemplos de servidores Web son Apache e Internet Information Service.

Tal como se puede leer en su página Web, http://httpd.apache.org/, Apache constituye un esfuerzo por desarrollar y mantener un servidor HTTP de código abierto para UNIX y Windows. Se trata de un servidor seguro, eficiente y extensible, que ha sido el más popular desde 1996.


9.2. Distintas propuestas en Windows: Apache Friends XAMPP, WAMP Server.

Si eres usuario de Windows existen varias posibilidades a tu alcance, todas son “llave en mano”, es decir, listas para descargar, instalar y usar sin complicaciones.

La primera es Apache Friends XAMPP. Esta solucione es un “todo en uno”, además de tu servidor Web Apache, tienes a tu disposición MySQL, PHP, phpMyAdmin, FileZillaFTP Server, etc.


Veamos cómo realizar la instalación.


1. Primero descargártela desde http://www.apachefriends.org/en/xampp.html, en el enlace XAMPP for Windows (XAMPP para Windows), XAMPP, Windows 1.6.6a [Basic package] Installer.

2. Lanza el ejecutable. El primer paso será elegir el idioma. Elige English (inglés), pues las otras opciones (alemán y japonés) no son mejores.

3. Luego te saldrá la pantalla de bienvenida del asistente que te guiará durante la instalación. Haz clic en Next, siguiente.

4. La siguiente pantalla te pregunta sobre el directorio de instalación de XAMPP.

Suele ser conveniente instalarlo en c:\xampp o en otra partición del disco duro (por ejemplo, la partición de datos D:), pero nunca en C:\Archivos de programa, en donde puedes tener problemas de permisos de escritura.

Pulsa Next para continuar con el asistente.

5. Luego te preguntará sobre los accesos directos y entradas en el menú de programas. Suelen ser convenientes porque facilitan un acceso rápido al servidor.

Además normalmente será aconsejable que instales Apache, MySQL y Filezilla como servicios, así cuando arranques tu ordenador tendrás todos tus servidores funcionando.

Cuando hagas clic en Install empezará el proceso de instalación propiamente dicho, conforme a las especificaciones que indicaste en el asistente.

6. Después de un proceso más o menos largo, en función de la potencia de tu equipo, observarás la pantalla de la derecha.

Como puedes comprobar te informa de que XAMPP 1.6.6.a ha sido instalado en tu ordenador y que pulses Finish para finalizar el asistente.

7. Si tienes un cortafuegos, en el ejemplo ZoneAlarm (que es gratuito, está disponible en http://www.zonealarm.com) deberás permitir el tráfico para Apache, MySQL (el que se muestra en la figura) y FileZilla.

En el caso de ZoneAlarm selecciona el cuadro Recordar esta configuración (para que ZoneAlarm no te avise cada vez que el servidor arranque) y haz clic en Permitir.

8. Los servicios han sido instalados correctamente. Como consejo te indica que uses el XAMPP Control Panel para gestionar los servicios.

9. ¡Enhorabuena! La instalación fue un éxito. ¿Deseas iniciar el XAMPP Control Panel? Haz clic en , para iniciar el panel de control.

10. Como puedes comprobar Apache, MySql y FileZilla están funcionando (Running).

Si quieres pararlos haz clic en la derecha de cada módulo en el botón Stop. Con el botón Admin…. podrás administrar los distintos servidores.

11. Llego la hora de la verdad. Utiliza tu navegador preferido (por ejemplo Mozilla Firefox) y navega a la dirección http://localhost/xampp/index.html. Debes ver una pantalla similar a la que se muestra en la figura.

Ya tienes un servidor Web completamente funcional en tu máquina, pero claro todavía no será visible en Internet hasta que realices algunos cambios en tu Router.

Si haces clic en phpinfo() podrás comprobar que PHP funciona en tu servidor y si seleccionas phpMyAdmin podrás administrar MySQL desde una interfaz gráfica pensada para el usuario inexperto o novato.

Para empezar a practicar dirígete a C:\xampp\htdocs\xampp y crea un archivo hola.html. Navega a http://localhost/xampp/hola.html y debes poder visualizar tu página Web.

Otra opción parecida es WampServer. Su página oficial es http://www.wampserver.com/en/. Se trata de una solución libre (bajo licencia GPL) que ofrece un entorno de desarrollo Web que te permite crear aplicaciones con Apache, PHP y MySQL. Integra también PHPMyAdmin y SQLLiteManager para facilitar el trabajo con MySQL.


Veamos cómo realizar la instalación.

1. Primero descargártela desde http://www.wampserver.com/en/download.php, haciendo clic en DOWNLOAD WampServer 2.0.

2. Una vez lanzado el ejecutable, la primera pantalla te avisa que no intentes actualizar desde la versión WAMP5 1.x.

Si la tienes instalada, salva tus datos, desinstálala y borra su directorio del disco duro.

Haz clic en para continuar la instalación.

3. La siguiente pantalla te da la bienvenida al asistente de instalación.

Es aconsejable que cierres el resto de aplicaciones antes de continuar. Una vez hecho esto, haz clic en Next, siguiente.

4. Luego debes aceptar el contrato (I accept the agreement) y pulsa Next. Observa que estas frente a una licencia GNU General Public License.

Para mayor información sobre licencias, te aconsejamos que leas nuestro libro “Aprende en libre en Linux y Windows” de Inforbooks. Aquí te adelantamos que esta licencia es la que más te ofrece de las que te puedes encontrar en el mercado.

5. En la siguiente pantalla debes seleccionar el directorio donde se instalará el servidor WampServer 2. Una buena elección es dejar el directorio por defecto c:\wamp.

Observa que debes tener al menos 120 MB disponibles en tu disco duro. Haz clic en Next.

6. A continuación, selecciona si deseas iconos para facilitarte el acceso al panel de administración de Wamp.

7. Luego, haz clic en Install para instalar el servidor.

8. El siguiente paso es seleccionar tu navegador por defecto.

Si utilizas Internet Explorer, selecciona en tu directorio WINDOWS el fichero explorer.exe y haz clic en Abrir.

9. En el siguiente paso debes indicar tu servidor SMTP y tu dirección de correo electrónico.

Si quieres ser capaz de enviar correos desde tu portal Web deberás configurar un servidor SMTP.

Haz clic en Next cuando hayas introducido esta información en los cuadros de texto.

10. La última pantalla te informa de que se ha acabado de instalar el servidor WampServer 2.

Esta habilitado la casilla Launch WampServer2 now, para que se lance el servidor inmediatamente. Pulsa Finish.

11. Debes poder visualizar en la barra de notificación (situada en la esquina inferior derecha) un nuevo icono:

12. Haz clic sobre él con el botón derecho y selecciona Language, Spanish para castellanizarlo. Luego con el botón izquierdo haz clic sobre él y podrás:

  • Encender, inicia el servidor.

  • Iniciar los Servicios. Arranca los distintos servicios. También puedes detenerlos y reiniciarlos.

  • Navegar a tu página principal: Localhost o dirigirte al directorio Web para publicar tus páginas Web: directorio www.

  • Configurar Apache, PHP y MySQL.

13. Si haces clic en Localhost puedes observar en tu navegador algo parecido a lo que ves en la figura. Tienes tu servidor funcionando correctamente.

Observa en el panel de notificación el icono de WAMPSERVER, éste debe estar con el color blanco y si sitúas el ratón por encima, debes poder leer la leyenda: WAMPSERVER – servidor Activo.

Haz una pequeña página html en el directorio C:\wamp\www, por ejemplo test.html, y pruébala en el navegador http://localhost/test.html.


9.3. Instalación en GNU/Linux.


Veamos cómo realizar la instalación de apache en GNU/Linux.

1. Instala el paquete apache2.

2. Ahora en tu navegador favorito, escribe la dirección http://localhost, también puedes escribir tu dirección IP, por ejemplo http://192.168.0.7.

3. Si quieres personalizar la página, basta con escribir en la consola sudo vi /var/www/index.html.

Puedes por supuesto crear otras páginas html, carpetas, etc., todas ellas deben estar creadas a partir del directorio /var/www.

4. Con lo que acabamos de hacer, nuestras páginas serán visibles desde nuestro equipo y si estamos en una red corporativa, desde cualquier ordenador de esta red privada. Bastará con que en la barra de direcciones se escriba la dirección IP de nuestro equipo.

Sin embargo, para tener presencia en Internet, es decir, si quieres que cuando cualquier usuario escriba http://www.miDominio.com acceda a tu servidor, precisamos dos pasos más. El primero es decirle a nuestro router que permita el acceso a nuestro equipo desde cualquier ordenador por el puerto 80, el que se utiliza para las conexiones http al servidor Web.

Esta configuración depende del router pero básicamente debes hacer lo siguiente:

1. Accede al router: En tu navegador escribe su dirección, por ejemplo http://192.168.1.1.

2. Configura el router. Precisarás indicarle la dirección IP del equipo (suponemos que estamos trabajando sin DHCP activado), en el ejemplo 192.168.1.14 y el servicio habilitado, en este caso Web Server. Para otros routers es exactamente igual sólo que lo tienes que indicar con números, es decir, que todo lo que entre desde fuera, por el puerto 80 (0.0.0.0:80) se redireccione a tu equipo (192.168.1.7:80).

Si sigue sin quedarte claro como abrir los puertos, consulta las direcciones: http://www.adslayuda.com/ y http://www.adslzone.net/.

El segundo paso es comprar un dominio e indicarle cuál es nuestra dirección IP (si tenemos una dirección IP estática).

También podemos utilizar servicios como no-ip.com que nos permiten de forma gratuita tener un dominio, el inconveniente es que en vez de ser http://www.miDominio.com, será http://miDominio.no-ip.com.


Si quieres escribir en tu red local http://miDominio.com o http://www.miDominio.com en vez de http://dirIPServidorWeb y que accedas a tu servidor Web, puedes modificar en los clientes en Linux el fichero /etc/hosts e incluir una línea:

dirIpServidorWeb miDominio.com www.miDominio.com, donde dirIpServidorWeb es la dirección IP de tu Servidor Web.

Si se trata de clientes Windows dicho fichero se encontrará en C:\WINDOWS\system32\drivers\etc\hosts.


9.4. Tu presencia en Internet.

9.4.1. Criterios para la elección de tu dominio.

Lo primero para decidir tu dominio es saber cuales son tus recursos y necesidades. Existen dos posibilidades:

1. Comprar un dominio. La ventaja es que si está disponible el nombre deseado (cada día que pasa es más complicado), cualquiera podrá visitar tu Web escribiendo en su navegador http://www.tuNombreDeDominioFavorito.com. En un entorno corporativo esta es la mejor opción, recuerda que esta dirección será la carta de presentación de tu empresa en Internet y debes ofrecer una imagen de solvencia y profesionalidad. Si tienes un servidor con IP fija debes configurar el dominio comprado desde un panel de control que deben proveerte y redireccionar dicho dominio (más concretamente la entrada www) a tu IP.

2. Hacer usos de dominios gratuitos. Si se trata de una Web personal donde quieres poner tu Blog, currículum vitae, etc. o de una pequeña empresa que no quiere tener gastos extras y no le importa contar con una presencia modesta, puede interesar tener un dominio gratuito. Existen dos servidores clásicos: No-IP.com, http://www.no-ip.com/ y DynDNS, http://www.dyndns.com/.


En el caso de los dominios gratuitos, debes realizar los siguientes pasos:

1. Regístrate.

2. Créate un subdominio que será el sustituto de nuestra IP.
Es un subdominio porque el dominio sería no-ip.com o dyndns.org, tu nombre sería: tuNombreSubdominioFavorito.no-ip.com o tuNombreSubdominioFavorito.dyndns.org.

En No-IP después de crearte una cuenta dirígete a Hosts/Redirect, Add.

En Hostname escribe el nombre deseado (para el subdominio), también puedes elegir entre varios dominios (no-ip.org, no-ip.info, no-ip.biz, etc.).
Por lo general elegirás en Host Type, DNS Host(A) y en IP Address, escribirás la dirección IP pública y fija del servidor.

3. Si no conoces cual es tu IP, navega a la dirección http://whatismyipaddress.com/.

Observa que no sólo te indica tu dirección IP sino que te muestra tu dirección geográfica.

Si haces clic en IP Lookup te mostrará el nombre de tu proveedor ISP.

4. Obviamente no todo el mundo tiene una IP estática o fija, si tienes una IP dinámica, instála el paquete no-ip.

Te preguntará por el nombre de usuario de No-IP.com y contraseña, la frecuencia de actualización (intervalo de tiempo en el que quieres que actualice tu dirección IP).

El resto de opciones puedes dejar sus valores por defecto en el 99% de los casos: Lista de Máquinas o Grupos, Nombre del dispositivo de Red (si tuvieras varios utiliza ifconfig) y desactivar NAT.

Los pasos a seguir para DynDNS son similares, tienes que instalar el paquete ddclient y seguir el asistente:

Proveedores de servicio de DNS dinámico (www.dyndns.com),

Nombres completos de dominios DynDNS (tuNombreSubominioFavorito.dyndns.org),

Nombre de usuario y contraseña en DynDNS e interfaz para el servicio (puedes comprobarlo con ifconfig).

9.4.2.Compra del dominio: ¿qué criterios debo seguir?

Para elegir el nombre del dominio ten en cuenta que debe ser fácil de recordar y acceder, así debería ser simple y breve. Por ejemplo, si estamos hablando de una empresa, la elección más evidente es el nombre de la compañía, además conviene que sea un .com (dominio de primer nivel bajo el que se registran las empresas con fines comerciales) y normalmente es aconsejable registrar también dominios territoriales como .es (es de España).

Deberías evitar el 0 (cero), pues se puede confundir con la letra del alfabeto o. No utilices guiones porque también se prestan a confusión: “-“ ó “_”.

Para hacer más universal tu dominio procura utilizar las letras del alfabeto inglés, es decir, olvídate de la “ñ” y de los acentos. Hay quien incluso compra los dominios que contienen errores ortográficos respecto al que representa nuestra empresa. Por ejemplo, si nuestro dominio es humano.com o libros.com podríamos querer comprar también umano.com o livros.com.

La compra de dominios se ha vuelto una tarea bastante ardua pues existen muchas personas que se dedican a comprar dominios para luego especular con ellos y conseguir beneficios. Luego te aconsejamos que compruebes la disponibilidad del dominio y lo registres a la mayor brevedad posible.

¿Dónde comprar tu dominio? Existen numerosas empresas que se dedican a este negocio: arsys (http://www.arsys.es/), Aruba.it (http://hosting.aruba.it/), Sync (https://www.sync.es/), Go Dadday.com (http://www.godaddy.com/), Piensa Solutions (http://piensasolutions.com/), etc. Además debes seleccionar que tipo de servicio te interesa:

1. Registro de dominios. Compra el domino y lo rediriges a tu servidor Web. Es el más barato y no tienes ningún límite: el espacio Web es tu disco duro, podrás utilizar PHP/ASP, MySQL, Java, CGI, etc. Sin embargo, tu servidor deberá estar funcionado a un ritmo de 24*7, 24 horas, 7 días a la semana y tendrás que habilitar por ti mismo los mecanismos de seguridad, entre otros la copia de seguridad.

2. Hosting Web. Es una de las opciones más caras y menos flexibles. En función del plan de hosting que adquieras dispondrás de distintas características: tamaño de espacio en disco, tipo de servidor (Linux/Windows), cuentas FTP, páginas de error personalizables, bases de datos (MySQL/SQL Server), ASP/PHP, etc. Como ventajas se encuentran la comodidad de tener todo “listo para usar” y la seguridad. Normalmente estos servidores están muy bien administrados y son poco vulnerables a ataques de hackers o software malintencionado.


Si decides tener un servidor Web en tu equipo debes considerar: el ancho de banda que te provee tu ISP; el PC que dedicas a este fin deberá ser dedicado, no debe tener ningún otro uso; además debe ser un equipo con suficiente RAM y capacidad de procesamiento y que sea capaz de tolerar el sobrecalentamiento de un uso continuado para lo que debes plantearte un buen sistema de refrigeración. Normalmente en un entorno empresarial deberías tener una sala acondicionada.

9.4.3. IP dinámica versus IP estática.

¿Qué diferencia existe entre una IP dinámica frente a una IP estática? La más obvia es que con una IP estática tienes siempre la misma IP, puedes montar cualquier servidor, no solo Web también FTP, SSH, Correo, P2P, etc. Sin embargo, también tiene sus desventajas: más cara, eres más vulnerable a ataques desde el exterior y cuando navegas eres más visible, dispones de menos privacidad que aquellos que cada vez que navegan utilizan una IP distinta.

¿Qué puedo hacer si tengo una IP dinámica? La más obvia es pedir a tu ISP que te provea una IP fija. Esto puede suponerte un desembolso de 10 a 20 euros al año dependiendo de tu ISP. Sin embargo, también existen otras opciones:

1. Utilizar los servicios de No-IP.com, http://www.no-ip.com/ y DynDNS, http://www.dyndns.com/. Los inconvenientes son que tu presencia en Internet será algo del tipo http://miDominioPreferido.no-ip.info y que el acceso al servidor será más lento.

2. También puedes utilizar el espacio Web proporcionado por instituciones educativas (muchas Universidades lo proporcionan a sus miembros) o por tu ISP (casi cualquier ISP te proporciona al menos 50 Mb para publicar páginas Web).

3. Otra posibilidad la ofrecen portales como Geocities (http://geocities.yahoo.com/), bravenet (http://www.bravenet.com/), Galeón (http://galeon.hispavista.com/), iESPANA (http://web.iespana.es/), Freeservers.com (http://www.freeservers.com/), Lycos Tripod (http://www.tripod.lycos.es/).

En estos últimos casos de hospedaje gratuito debes valorar los siguiente: el espacio que te proporcionan; la publicidad que agregarán a tu portal Web; si te proporcionarán acceso vía FTP, recuerda que al estar todas las páginas en sus servidores tendrás que acceder vía FTP y/o mediante herramientas y asistentes de creación de páginas (consulta el capítulo de FTP para más información); si te permiten el uso de PHP, CGI o ASP; si te permiten utilizar subdominios y redirección, así como si cuentan con servicios del tipo contadores, libros de visitas, estadísticas, etc.

9.4.4. Alta en servidores. Posicionamiento.

El objetivo es construir un espacio Web de calidad que muestre información útil. Por tanto, es esencial mostrar buenos contenidos con una interfaz amigable y que aporte algo nuevo y original, ¡Se creativo!

Sin embargo, también debemos promocionar nuestras páginas. Obviamente puedes comentárselo a tus amigos y añadir la dirección Web (incluso el título y una pequeña reseña) a tu firma en tus correos electrónicos o en los posts que redactas en los foros, blogs, etc. Pero, sin lugar a dudas, lo más importante será darla de alta en los buscadores.

Existen dos tipos de buscadores: aquellos organizados por índices o directorios (debes necesariamente darte de alta en ellos para que te incluyan, por ejemplo Terra o Yahoo) o aquellos que poseen un motor de búsqueda, también llamados robots o arañas que está permanente rastreando la red. El más típico de los robots de búsqueda es el de Google.

Sin embargo, aunque Googlebo (el robot de Google) esté continuamente rebuscando en la red, debes empezar dándote de alta en él.

Navega a http://www.google.es/addurl/ (www.google.es, Todo acerca de Google, Agrege/quite su URL), indica la dirección o URL, comentarios sobre dicho espacio Web, así como el captcha (pequeña imagen con letras torcidas para que Google sepa que eres una persona no un programa software). Finalmente haz clic en Añadir URL.

También deberías darte de alta en Yahoo desde https://siteexplorer.search.yahoo.com/submit. También visita ODP, Open Directory Project, http://www.dmoz.org/, haz clic en suggest URL y sigue las instrucciones.

Además de darlo de alta en los buscadores es importante que cuando el usuario haga una búsqueda aparezca tu portal en los primeros resultados. Te damos varios consejos para conseguir un buen posicionamiento de tu Web:

1. Tu página deberá tener un diseño atractivo al usuario pero debe también facilitarle el trabajo a los robots, es decir, debe tener un diseño sencillo y ser un portal bien organizado.

2. Del paso anterior se deduce que debes tener cuidado con el código escrito por las típicas aplicaciones Microsoft Front Page o Macromedia Dreamweaver (que añaden muchas líneas de código propias, “sucias”), así como debes ponderar el uso de Flash y JavaScript que no son interpretados por los robots. Comprueba que el código HTML no contiene errores y que todos los enlaces o links funcionan.

Una buena idea “para ponerte en la piel del robot de los buscadores” es visitar tu portal Web con un navegador de texto tipo Lynx y Links2 (lynx, links2), se lanzan con lynx o links2 http://www.tuDominoWeb.com.

También w3m (w3m, w3m-img) es otra posibilidad w3m –T text/html http://www.tuDominoWeb.com.

3. Medita “a conciencia” las palabras o frases claves para tu portal. Deben ser sencillas y familiares para los usuarios, pero a su vez han de describir fielmente, con la máxima exactitud posible el contenido de tu Web.

4. Elige un buen título para tu dominio Web.

5. Hazte tú visible, publica libros, artículos, posts, tutoriales, etc. tanto online como offline firmándolos con tu URL.

6. Ponte en contacto con los Webmasters para presentarles tu nuevo portal y proponles intercambiar enlaces. Estos links deben ser útiles a los lectores de vuestros espacios Webs, no merece la pena que te enlacen desde un portal cuya temática nada tiene que ver con la tuya.

7. Comprueba el PageRank o popularidad de tu página. En Google debes visitar las herramientas que te proporcionan para Webmasters y accederás a mucha información sobre tu portal Web: PageRank, búsquedas que devuelven como una de sus respuestas tu portal Web, etc. La dirección es https://www.google.com/webmasters/tools/dashboard. También puedes descargar la barra de Google y al navegar por cualquier página Web podrás comprobar su PageRank.

8. Utiliza las etiquetas <TITLE> y <META>. <TITLE> describe el título de la página tal como será interpretado por el robot de búsqueda. <META> suministra información general, no visible por los visitantes pero si por los robots, sobre tu dominio Web. Veamos un ejemplo que busca “caer bien” a los robots:

<html>

<head>

<title>Guía del perfecto Webmaster</title>

<meta name=”description” content=”Todo lo que necesitas saber para ser un buen Webmaster”>

Esta meta muestra una descripción de tu página Web.

<meta name=”keywords” content=”html java php drupal wordpress javascript joomla”>

Esta segunda meta describe las palabras claves.

</head>

<body>

<h1>Aquí debes incluir un resumen o el contenido clave que quieres comunicar</h1>

Cuerpo de la página HTML.

<img src=”miImagen.gif” alt=”drupal”>

El robot no puede leer la imagen pero si interpretará la etiqueta alt, incluso lo puede agregar dentro de las palabras claves encontradas.

<a ref.=http://anawim.no-ip.info”>Página de los autores</a>

Siempre crea un enlace con texto que describa el contenido de la Web.

</body>

</html>

9.4.5. Validando tu Web.

En un mundo perfecto HTML sería un estándar que todos los navegadores seguirían, sin embargo, no es así. Por tanto, aunque precisamos comprobar que el código de nuestras páginas Web está validado conforme a las especificaciones del W3C esto no será suficiente.

El Consorcio World Wide Web desarrolla tecnologías para guiar a la Red a su potencialidad máxima a modo de foro de información, comercio, comunicación y conocimiento colectivo (extracto de su página Web, http://www.w3c.es/).

W3C ofrece a los usuarios un validador en la dirección http://validator.w3.org. Basta con escribir la dirección de tu Web en el cuadro de texto Address y hacer clic en Check.

Una vez validado deberías comprobar la correcta visualización de tu Web en los navegadores más populares del mercado.


9.5. Profundizando en Apache.


9.5.1. Directorios y archivos de configuración.

Los ficheros de configuración de apache se encuentran en el directorio /etc/apache2. En particular presta atención al fichero apache2.conf, veamos su contenido:

ServerRoot “/etc/apache2/”

ServerRoot es la directiva que indica el directorio donde se encuentra instalado y se configura Apache.

Timeout 300

Tiempo máximo en segundos que Apache espera entre envíos y recepción de paquetes, te recomendamos dejar el valor por defecto.

AccessFileName .htaccess

Apache permite cambiar las directivas de configuración para un directorio dado. Con AccessFileName indicamos el nombre del fichero a buscar para directivas de configuración adicional

Finalmente tenemos ServerTokens que facilita información sobre el servidor Apache. Desde un terminal realiza una llamada al servidor: telnet localhost 80 (el puerto 80 es el puerto del servidor Web) y lanza la petición GET /index.html http/1.0 tecleando dos veces INTRO.

Observa toda la información que suministra Apache.

La opción por defecto es ServerTokens Full, aquí en la figura inferior lo hemos cambiado a ServerTokens Prod y el posible hacker tendrá menos información a su alcance: no sabrá la versión de Apache, el sistema operativo en el que está alojado, etc.

Observa que sólo pretendemos mostrar un ejemplo de cómo empezar a configurar Apache para proveer seguridad.

La estructura básica de directorios es la siguiente:

* /etc/init.d/apache2: Inicia y para apache2, básicamente llama a /usr/sbin/apache2ctl.

* /etc/apache2/mods-available: módulos disponibles en Apache.

* /etc/apache2/mods-enabled: enlaces simbólicos a los módulos activos.

* /etc/apache2/sites-available: sitios disponibles en Apache.

* /etc/apache2/sites-enabled: enlaces simbólicos a los sitios activos.

* /usr/share/apache2: iconos y errores disponibles por defecto en Apache.

* /var/log: información sobre los logs de los errores y accesos al servidor.

Si bien puede parecerte inicialmente un poco confuso, veremos con algunos ejemplos que no es para tanto. Vamos a empezar a configurar el primer sitio, el que está disponible por defecto después de la instalación. En un terminal teclea:

sudo vi /etc/apache2/sites-available/default:

NameVirtualHost *

<VirtualHost *>

Tendremos una entrada VirtualHost para cada dominio virtual que poseamos

ServerAdmin pasatelinux@gmail.com

Indicamos la dirección de correo del administrador

ServerName www.pasatelinux.com

Indicamos el nombre del servidor. Observa que para poder ser accesible “desde dentro” tendrás que crear una entrada en /etc/hosts con: 127.0.0.1 www.pasatelinux.com y “desde fuera” tendrás que haber comprado el dominio, redireccionado a tu IP y abrir el puerto en el Router a la dirección IP privada donde está tu servidor Web

DocumentRoot /var/www/

Con la siguiente directiva indicamos donde se encuentra la raíz del site en el árbol de directorios del servidor, es decir, cuando el cliente Web solicita la página http://www.servidor.com/directorio/pagina1.html el servidor busca la página en DocumentRoot/directorio/pagina1.html, en este caso: /var/www/directorio/pagina1.html

[…]

<Directory /var/www/>

Las siguientes directivas se aplican al directorio /var/www/

Options Indexes FollowSymLinks Multiviews

Así por ejemplo, la opción Indexes permite navegar por el servidor Web, es decir, si solicitamos http://www.servidor.com/directorio/ mostrará todos los ficheros alojados en /var/www/directorio/.

AllowOverride None

Order allow, deny

Las directivas allow (permitir) son procesadas antes que las deny (denegar).

allow from all

Permitimos el acceso desde cualquier equipo. Por ejemplo si escribimos allow from 192.168.1 127.0.0.1 permitimos sólo el acceso desde la red local incluido el propio equipo

</Directory>

[…]

</VirtualHost>


Escribe en la consola:

    ls –l /etc/apache2/sites-enabled

Puedes comprobar que existe sólo un enlace simbólico llamado 000-default que apunta al site o Web por defecto disponible tras la instalación:

lrwxrwxrwx 1 root root […] 000-default -> /etc/apache2/sites-available/default

Por tanto, cuando instalamos Apache, se creo automáticamente un sitio disponible y el correspondiente enlace simbólico para mostrar que está activo.

9.5.2. Arranque y parada del servidor Web.

Para parar Apache escribe

    sudo /etc/init.d/apache2 stop

Para iniciarlo

    sudo /etc/init.d/apache2 start

Y para reiniciarlo

    sudo /etc/init.d/apache2 restart.

Normalmente bastará con reiniciar el servidor y tendrás que realizarlo siempre que modifiques cualquier archivo de configuración de Apache.

9.5.3. Modificación del directorio raíz y de la página por defecto.

Para modificar el directorio raíz del site o Web principal bastaría con modificar la directiva DocumentRoot del fichero /etc/apache2/sites-available/default.

La página por defecto que se mostrará si un cliente escribe en su navegador http://www.servidor.com, queda especificada por la directiva DirectoryIndex en el archivo /etc/apache2/mods-enabled/dir.conf.

Si escribimos DirectoryIndex index.html index.php welcome.php buscará ante la petición http://www.servidor.com, en el directorio indicado por DocumentRoot primero index.html, luego index.php y finalmente welcome.php.

9.5.4. Creación de dominios virtuales.

Podemos tener tantos dominios virtuales como deseemos, aunque hemos de tener en cuenta que debemos ponderar que el servidor no quede muy sobrecargado. Si queremos tener varios dominios en Internet, por ejemplo http://www.miDominio1.com, http://www.miDominio2.com, etc. podemos gestionarlos desde un solo equipo mediante dominios virtuales.

Cuando configuramos un dominio virtual le decimos a Apache que cualquier petición a www.miDominioX.com la redirija a un determinado directorio de nuestro sistema de ficheros.

Como te comentamos en sites-available están todos los sites o dominios disponibles.

Por defecto teníamos uno, si queremos tener varios dominios virtuales tendremos que crear tantos ficheros en este directorio como dominios.

Creemos un dominio con nombre selibre, cuando escribamos http://www.selibre.com nos debe llevar a la página principal de este dominio virtual. Teclea en la consola

    sudo vi /etc/apache2/sites-available/selibre

Y escribe las siguientes líneas:

<VirtualHost *>

ServerName www.selibre.com

Indicamos el nombre del servidor. Observa que de forma análoga al anterior para poder ser accesible “desde dentro” tendrás que crear una entrada en /etc/hosts con: 127.0.0.1 www.selibre.com y “desde fuera” tendrás que haber comprado el dominio y redireccionarlo a tu IP. Sin embargo ya no tendrás que hacer nada más, Apache detectará por la petición del cliente a que dominio virtual deberá enviarlo.

DocumentRoot /var/www/selibre

Con la siguiente directiva indicamos donde se encuentra la raíz del dominio virtual en el árbol de directorios del servidor, es decir, cuando el cliente Web solicita la página http://www.selibre.com/ el servidor busca la página en /var/www/selibre.

ServerAdmin selibre@gmail.com

DirectoryIndex index.html

Indicamos cual es la página por defecto del dominio virtual

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/selibre>

Las siguientes directivas se aplican al directorio /var/www/selibre

Options Indexes FollowSymLinks Multiviews

AllowOverride None

Order allow, deny

allow from all

</Directory>

</VirtualHost>

Una vez creado este fichero debemos habilitarlo como un sitio activo, esto se realiza con la orden:

            a2ensite selibre.

Puedes comprobarlo con:

        ls –l /etc/apache2/sites-enabled.

Crea la carpeta /var/www/selibre, un fichero index.html en dicha carpeta y reinicia Apache, ¡Ya tienes dos dominios servidos desde tu Apache!

9.5.5. Personalizar la página de error.

Si queremos personalizar los mensajes de error edita el fichero /etc/apache2/apache2.conf y descomenta la línea (quita la almohadilla “#”)

ErrorDocument 500 “Error interno del sistema”

ErrorDocument 404 “Disculpe las molestias, documento no encontrado”

Observa que sigue la estructura ErrorDocument Número del código de error (500 Error del sistema, 404 no encontrado, etc.) Descripción (entre comillas).

Por supuesto, podrías hacer algo más elaborado, por ejemplo una página Web, tendrías que escribir algo como:

ErrorDocument 404 /errores/no_encontrado.html

Crear una carpeta errores en DocumentRoot en este caso /var/www y el correspondiente fichero no_encontrado.html

También puedes redirigir el error a un CGI o a un fichero externo.

9.5.6. Protección de directorios. Creación de una zona privada.

En muchas situaciones puede ser interesante tener un espacio de tu Web privado. Por ejemplo en una empresa puede haber una Intranet corporativa, accesible sólo desde la propia red o sólo desde algunos equipos y/o a ciertos miembros de la compañía. También a nivel privado puede serte interesante tener ciertos directorios accesibles por contraseña.


No te confundas, si tienes cierta información cuya privacidad es vital no debería nunca estar alojado en un servidor Web. Es decir, podemos dotar de cierta seguridad a determinadas secciones de tu portal Web, pero nunca esta información debe ser crítica porque estará bastante expuesta al encontrarse en un servidor público.

En el fichero apache2.conf teníamos la línea: AccessFileName .htaccess y habíamos comentado que con esta directiva Apache nos permitía cambiar las directivas de configuración para un directorio dado. Más concretamente, hemos definido el archivo de configuración que nos permite personalizarlas. Sin embargo, esta directiva depende de AllowOverride que determina si las directivas pueden modificarse con .htaccess (AllowOverride All) o no (AllowOverride None, que es la opción por defecto). Luego lo primero que deberás realizar es modificar esta directiva, típicamente suele ser conveniente no hacerlo en el site por defecto, sino en otro site virtual, para que contenga AllowOverride All. En nuestro ejemplo:

         sudo vi /etc/apache2/sites-available/selibre.

Ahora veamos las distintas opciones que podamos realizar, todas ellas pasan por crear un fichero .htaccess en el directorio donde queramos restringir el acceso.

Por ejemplo, después de crear una carpeta llamada privado en /var/www/selibre, escribe en la consola:

sudo vi /var/www/selibre/privado/.htaccess.

Ahora veamos las distintas posibilidades:

Que nadie pueda entrar a dicho directorio vía Web: deny from all

* Que puedan entrar desde una dirección IP específica. Suele ser conveniente tener la directiva Order deny, allow que configura que primero atienda a las directrices que niegan privilegios (en principio deniego a todo el mundo) y luego dejo algún acceso. La segunda sería allow from dirIp.

* Que sólo puedan entrar desde dentro de la red privada:

Order deny, allow

deny from all

allow from 192.168.1

* Para proteger por contraseña un directorio haz lo siguiente. Teclea en la consola:

htpasswd -cm /home/joe/.htpasswd joe

e introduce la contraseña para dicho usuario. La opción “c” indica que vas a crear un fichero, la “m” que vas a usar claves encriptadas MD5. Observa que el fichero .htpasswd lo ocultamos en la carpeta personal del usuario joe, esto se realiza para proveer de la máxima seguridad posible a las contraseñas.

En el fichero .htaccess debería aparecer algo como:

AuthName "Mi site privado"
AuthType basic
AuthUserFile /home/joe/.htpasswd
require user joe

9.5.7. Soporte para CGI. Utilizando Perl.


1. Escribe en el final del fichero apache2.conf las siguientes líneas:

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

Redirige todas las peticiones del tipo http://www.dominio.com/cgi-bin/ a /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">

Como siempre hemos de definir una sección Directory para habilitar permisos.

AllowOverride None

Options ExecCGI

Presta atención, en esta línea habilitamos los permisos para ejecutar scripts CGI.

Order allow,deny

Allow from all

</Directory>

2. Obviamente tendrás que reiniciar apache:

sudo /etc/init.d/apache2 restart.

3. Crea un script cgi en /usr/lib/cgi-bin/ por ejemplo escribe

sudo vi /usr/lib/cgi-bin/micgi.cgi:

Con este contenido:

#!/usr/bin/perl
print "Content-type: text/html\n\n";

print "<html><head><title>Hola mundo libre</title></head>\n”;

print “<body>Hola mundo libre.<a href= http://www.manosunidas.org/>Manos Unidas </a></body></html>\n”;

4. Dale permiso de escritura

sudo chmod a+x micgi.cgi

5. Escribe en el navegador http://www.dominio.com/cgi-bin/micgi.cgi y obtendrás el mensaje Hola Mundo Libre.

Respecto al programa en Perl que hemos escrito analicémoslo línea a línea:

* La primera sentencia indica donde se encuentra el intérprete de Perl:

#!/usr/bin/perl

* La siguiente línea informa del tipo de contenido, en este caso HTML para que pueda ser interpretado por el navegador Web. Todas las líneas de un programa en Perl acaban con un punto y coma.

print "Content-type: text/html\n\n";

* Las siguientes líneas se tratan de código HTML. La única diferencia es que debes invocar a la función print y acabar con el salto de línea \n, además de encerrar todo entre comillas dobles.

print "<html><head><title>Hola mundo libre</title></head>\n”;

print “<body>Hola mundo libre.<a href= http://www.manosunidas.org/>Manos Unidas </a></body></html>\n”;

9.5.8. Nuestras estadísticas con Webalizer.

Una vez que hayas creado tu site querrás saber cuantas personas te visitan, desde dónde te visitan, cuales son las páginas más visitados, etc. Webalizer es un software libre, distribuido bajo la licencia GNU, que te realiza informes en HTML para poder ser visualizados desde cualquier navegador que te permite conocer que pasa en el servidor.


Realicemos la instalación:

1. Instala el paquete webalizer.

2. Edita el archivo de configuración de Apache, /etc/apache2/apache2.conf y debes de tener esta línea:

HostnameLookups On

OJO: Con esta directiva a On activamos la función Lookup de Apache, con lo cual por cada petición que reciba el servidor éste realizará una petición inversa para conocer de donde procede esta petición. Está a Off por defecto porque la ganancia de conocer quien nos visita repercute negativamente en el rendimiento del servidor.

3. Reinicia Apache:

sudo /etc/init.d/apache2 restart

4. El archivo de Log de Webalizer debe apuntar al de Apache2, edita su fichero de configuración con

sudo vi /etc/apache2/webalizer

y asegúrate de encontrar:

LogFile /var/log/apache2/access.log.1

5. Lanza webalizer desde la consola manualmente la primera vez:

sudo webalizer.

6. Navega a http://localhost/webalizer y podrás tener todas las estadísticas de tu site vía navegador Web. Aunque se muestra sólo parcialmente en la figura, en la parte inferior podrás consultar las estadísticas por meses, si haces clic en un mes determinado accederás a información mucho más detallada: IP que te visitan, páginas visitadas, tráfico, etc.

Para una información más detallada visita http://www.ubuntugeek.com/webalizer-apache-web-server-log-file-analysis-tool.html. Otra posibilidad es AWStats. Es una herramienta más completa pero a su vez también más compleja de configurar. La dirección oficial es http://www.awstats.org/.